package br.com.academia.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import br.com.academia.modelo.Modalidade;

public class ModalidadeDAO {

	private Connection connection;
	private PreparedStatement stmt;
	private ResultSet rs;
	private String sql;
	private boolean resultado = true;

	public ModalidadeDAO() {
		connection = new ConnectionFactory().getConnection();
	}

	public boolean incluir(Modalidade modalidade) {
		sql = "insert into modalidade (nome, tipo, descricao, beneficios) "
				+ "values (?,?,?,?)";
		try {
			stmt = connection.prepareStatement(sql);
			stmt.setString(1, modalidade.getNome());
			stmt.setString(2, modalidade.getTipo());
			stmt.setString(3, modalidade.getDescricao());
			stmt.setString(4, modalidade.getBeneficios());
			stmt.executeUpdate();
		} catch (SQLException e) {
			resultado = false;
			throw new RuntimeException(e);
		}
		close();
		return resultado;
	}

	private void close() {
		try {
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public boolean alterar(Modalidade usuario) {
		sql = "update modalidade set nome=? , tipo=?, descricao=?, beneficios=? where idmodalidade=?";
		try {
			stmt = connection.prepareStatement(sql);
			stmt.setString(1, usuario.getNome());
			stmt.setString(2, usuario.getTipo());
			stmt.setString(3, usuario.getDescricao());
			stmt.setString(4, usuario.getBeneficios());
			stmt.setInt(5, (int) usuario.getIdmodalidade());
			stmt.executeUpdate();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		close();
		return resultado;
	}

	public boolean excluir(Modalidade usuario) {
		sql = "delete from modalidade where idmodalidade = ?";
		try {
			stmt = connection.prepareStatement(sql);
			stmt.setInt(1, usuario.getIdmodalidade());
			stmt.execute();
		} catch (SQLException e) {
			resultado = false;
			throw new RuntimeException(e);
		}
		close();
		return resultado;
	}

	public Modalidade consultar(Modalidade usuario) {
		sql = "select nome, tipo, descricao, beneficios from modalidade where idmodalidade=?";
		try {
			stmt = connection.prepareStatement(sql);
			stmt.setInt(1, (int) usuario.getIdmodalidade());
			rs = stmt.executeQuery();
			rs.next();
			usuario.setNome(rs.getString("nome"));
			usuario.setTipo(rs.getString("tipo"));
			usuario.setDescricao(rs.getString("descricao"));
			usuario.setBeneficios(rs.getString("beneficios"));
			rs.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		close();
		return usuario;
	}

	public ArrayList<Modalidade> listar() {
		ArrayList<Modalidade> lista = new ArrayList<>();
		sql = "select * from modalidade";
		try {
			stmt = connection.prepareStatement(sql);
			rs = stmt.executeQuery();
			Modalidade usuario;
			while (rs.next()) {
				usuario = new Modalidade();
				usuario.setIdmodalidade(rs.getInt("idmodalidade"));
				usuario.setNome(rs.getString("nome"));
				usuario.setTipo(rs.getString("tipo"));
				usuario.setDescricao(rs.getString("descricao"));
				usuario.setBeneficios(rs.getString("beneficios"));
				lista.add(usuario);
			}
			rs.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		close();
		return lista;
	}
}
